package com.hns.tool.pub;

import java.math.BigDecimal;

/**
 * 对象组合操作
 * @author:Fisher
 * @email:zhuangcaijin@126.com
 * @version Revision 2.0.0
 */
public class ObjectCombine implements ICombine {
	/**
	 * 本类对象singleton
	 */
	private static ObjectCombine m_objCombine=new ObjectCombine();
	/**
	 * 构造
	 * @email:zhuangcaijin@126.com
	 */
	private ObjectCombine() {
		super();
	}
	
	/**
	 * 将两个对象进行组合操作
	 * @param o1 对象1
	 * @param o2 对象2
	 * @return 组合操作后的对象
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public Object combine(Object obj1, Object obj2)  {
		//暂时只处理obj1与obj2数据类型相同的情况
	
		//如果两项都为空则结果为空
		if (obj1 == null && obj2 == null)
		{
			return null;
		}
		if (obj1 == null && obj2 != null)
		{
			return obj2;
		}
		if (obj1 != null && obj2 == null)
		{
			return obj1;
		}
	
		if (obj1.getClass().equals(Integer.class))
		{
			int data1 = ((Integer) obj1).intValue();
			int data2 = ((Integer) obj2).intValue();
			return new Integer(data1 + data2);
		}
		if (obj1.getClass().equals(BigDecimal.class))
		{
			obj1 = ((BigDecimal) obj1).add((BigDecimal) obj2);
			return obj1;
		}
		if (obj1.getClass().equals(Double.class))
		{
			double data1 = ((Double) obj1).doubleValue();
			double data2 = ((Double) obj2).doubleValue();
			return new Double(data1 + data2);
		}
		return null;
	}
	/**
	 * 获取本类对象，单例
	 * @return 本类对象
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static ICombine getInstance()
	{
		return m_objCombine;
	}
}
